package com.qidi.utils;

import com.qidi.entity.HtmlContent;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * HEU
 * Harbin Engineering University
 *
 * @author QiDi
 * @date 2022/12/15 15:28
 */
public class HtmlParseUtils {
    /**
     * 传入一个keyword，将会自动解析该keyword对应的JD商品页面
     * 并将解析后的HtmlContent进行return
     *
     * @param keyword
     * @return
     */
    public List<HtmlContent> parseJD(String keyword) throws IOException {

        //需要解析的JD商品页面
        String url = "https://search.jd.com/Search?keyword=" + keyword;

        //通过Jsoup解析JD商品页面
        Document document = Jsoup.parse(new URL(url), 30000);

        //通过分析JD的商品都存在J_goodsList这个div中
        Element divElement = document.getElementById("J_goodsList");

        //JD的商品信息都存在J_goodsList这个div下的li标签中
        //取出所有的li标签  构成lis
        Elements lis = divElement.getElementsByTag("li");

        //用于存放遍历出的商品信息
        ArrayList<HtmlContent> contents = new ArrayList<>();

        //对lis进行遍历取出每个li标签中的title、img和price相关信息
        //并将这些信息存到刚刚new出的contents中
        for (Element li : lis) {

            //取出title相关信息
            String title = li.getElementsByClass("p-name").eq(0).text();

            //取出img的src
            String img = li.getElementsByTag("img").eq(0).attr("data-lazy-img");

            //取出price的相关信息
            String price = li.getElementsByClass("p-price").eq(0).text();

            contents.add(new HtmlContent(title,price,img));


        }

        return contents;
    }
}











